var mongoose=require('mongoose');
var Record=mongoose.model('record',{
    cat:{
        id:String,
        en:String,
        cn:String
    },
    count:Number,
    page:Number
});
var db=mongoose.connect('mongodb://localhost/MongoDB_QuanWei_2');


var cat={
        id:'1101',
        en:'OS',
        cn:'系统'
    };

Record.update({
    cat:cat
},{    
    $setOnInsert:{    
        count:0,
        page:1
    }
},{upsert:true},(err,r)=>{
    if(err)throw err;
    console.log('初始:',r);

    Record.find({cat:cat},(e,r)=>{
        if(e)throw e;
        console.log('初始 Find:\n',JSON.stringify(r,null,2));



        Record.update({
            cat:cat
        },{
            $setOnInsert:{
                count:200,
                page:2
            }
        },{upsert:true},(err,r)=>{
            if(err)throw err;
            console.log('2次初始:',r);

            Record.find({cat:cat},(e,r)=>{
                if(e)throw e;
                console.log('2次初始Find:\n',JSON.stringify(r,null,2));


                Record.update({
                    cat:cat
                },{
                    $set:{
                        count:300,
                        page:3
                    }
                },(err,r)=>{
                    if(err)throw err;
                    console.log('Update:',r);

                    Record.find({cat:cat},(e,r)=>{
                        if(e)throw e;
                        console.log('Update Find:\n',JSON.stringify(r,null,2));

                        process.exit(1);


                    });

                });




            });

        });


    });

});


/*
 * $setOnInsert:{field:value}
 *
 * 执行update并开启upsert时，此操作会保证只有在创建文档时为指定字段赋值，之后的所有更新操作中，这个字段的值不再会被更新
 *
 * */





